Page({
  data: {
    // 控制倒计时组件的显示
    countDownVisible: false,
    mobile: '18888888888',
    code: ''
  },
  onLoad({
    redirectURL
  }) {
    this.setData({
      redirectURL
    })
  },
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail, // ev.detail 表示一直在变化的时间，例如 {days: 0, hours: 0, minutes: 0, seconds: 58, milliseconds: 999}
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  verifyMobile() {
    const reg = /^1[3-9]\d{9}$/
    const valid = reg.test(this.data.mobile.trim())
    if (!valid) wx.utils.toast('校验手机号失败')
    return valid
  },
  verifyCode() {
    const reg = /^\d{6}$/
    const valid = reg.test(this.data.code.trim())
    if (!valid) wx.utils.toast('校验验证码失败')
    return valid
  },
  async getCode() {
    // 1. 收集手机号
    // 2. 校验手机号
    if (!this.verifyMobile()) return
    // 3. 发请求
    const {
      code,
      data
    } = await wx.http.get('/code', {
      mobile: this.data.mobile.trim()
    })
    if (code !== 10000) return wx.utils.toast('获取验证码失败')
    // 实际开发中，后端绝对不会返回给你验证码的，咱这儿是为了测试方便
    wx.utils.toast('获取验证码成功')
    // 4. 显示倒计时
    this.setData({
      countDownVisible: true,
      code: data.code
    })
  },
  copyCode() {
    wx.setClipboardData({
      data: this.data.code
    })
  },
  async submitForm() {
    const app = getApp()
    // 校验手机号
    if (!this.verifyMobile()) return
    // 校验验证码
    if (!this.verifyCode()) return
    // 登录
    const {
      mobile,
      code // data 中的 code
    } = this.data
    const {
      code: codeRes, // 后端返回的 code
      data
    } = await wx.http.post('/login', {
      mobile: mobile.trim(),
      code: code.trim()
    })
    if (codeRes !== 10000) return wx.utils.toast('登录失败')
    // wx.setStorageSync('token', 'Bearer ' + data.token)
    // // 存储 token 到本地和挂载到 app 实例
    // app.token = 'Bearer ' + data.token
    app.setToken(data.token, data.refreshToken)
    // 跳转到原页面
    // 之所以用 redirectTo 而不是 navigateTo，是为了不让登录页形成历史记录
    wx.redirectTo({
      url: this.data.redirectURL || '/pages/index/index',
    })
  }
})